Automated initiation and adaptation of a dialog with a user via user interface devices of a computing device of the user

ABSTRACT

Methods and apparatus directed to utilizing an automated messaging system to initiate and/or adapt a dialog with at least one user, where the dialog occurs via user interface input and output devices of at least one computing device of the user. In some of those implementations, the automated messaging system identifies at least one task associated with the user and initiates the dialog with the user based on identifying the task. The automated messaging system may initiate the dialog to provide the user with additional information related to the task and/or to determine, based on user input provided during the dialog, values for one or more parameters of the task. In some implementations, the automated messaging system may further initiate performance of the task utilizing parameters determined during the dialog.

BACKGROUND

Some Internet platforms may enable a user to perform one or more actionsassociated with a specific service entity. However, the platformstypically require the user to explicitly identify the specific serviceentity prior to selecting criteria for the one or more actions and/or tomake selections of structured options in selecting the criteria for theone or more actions. For example, a user may book a reservation at aparticular restaurant by navigating to a web page for that particularrestaurant and selecting a time, date, and number of people from dropdown user interface menus of the web page. Also, for example, a user mayschedule an appointment with a business by navigating to a web page forthat business and selecting a time, date, and type of appointment fromavailable options presented in user interface elements of the webpage.

However, these and/or other techniques may suffer from one or moredrawbacks. For example, they may require that the user first identifythe specific service entity and then provide structured input directedto performance of an action for that specific service entity. This maybe a difficult task for certain users who may not be aware that the taskis performable and/or which service entities may be utilized to performthe task. Also, for example, they may not enable specification of one ormore (e.g., all) criteria of the action to be performed via free-formnatural language input by the user. Also, for example, they may utilizefixed structured fields that are not adapted to intent of the user, suchas intent determined based on user input in attempting to perform theaction and/or intent determined based on past user actions and/or othersource(s). Additional and/or alternative drawbacks may be presented.

SUMMARY

Implementations of this specification are directed to utilizing anautomated messaging system to initiate and/or adapt a dialog with atleast one user, where the dialog occurs via user interface input andoutput devices of at least one computing device of the user. In some ofthose implementations, the automated messaging system identifies atleast one task associated with the user and initiates the dialog withthe user based on identifying the task. The automated messaging systemmay initiate the dialog to provide the user with additional informationrelated to the task and/or to determine, based on user input providedduring the dialog, values for one or more parameters of the task. Insome implementations, the automated messaging system may furtherinitiate performance of the task utilizing parameters determined duringthe dialog. Initiation of the dialog by the automated messaging systemmay be beneficial to certain users who may not be aware that the task isperformable and/or which service entities may be utilized to perform thetask. For example, travelers to a new location, immigrants to a newlocation, etc. may be wholly unaware that certain tasks related to thenew location are even performable and/or may be unaware that anautomated messaging system may be utilized to initiate performance ofcertain tasks.

In some implementations, the automated messaging system may generatequestions or other prompts during a dialog that solicit particularinformation from the user and may actively adapt the prompts based onuser interface input provided by the user during the dialog. In some ofthose implementations, prompts generated by the automated messagingsystem during a dialog with the user may be configured to extract, fromthe user, values for necessary and/or desired parameters for a task, andmay be adapted during the dialog based on the user's responses duringthe dialog. At least some of the prompts generated by the automatedmessaging system may be natural language prompts and at least some ofthe user interface input provided by the user during the dialog may benatural language free-form input. As used herein, free-form input isinput that is formulated by a user and that is not constrained to agroup of options presented for selection by the user.

In some implementations, in engaging in the dialog with the user, theautomated messaging system may generate one or more prompts based on oneor more protocols configured for one or more service entities. Forexample, the protocols may include “general” protocols that apply to aplurality of service entities that are members of the same class, and/or“specific” protocols that apply to a more narrowly tailored group thanthe general protocols (e.g., tailored to a subset of the class, such asa specific service entity of the class).

In some implementations, in engaging in the dialog with the user, theautomated messaging system may generate content for presenting to theuser based on one or more entries of a local language database. In someimplementations, the local language database may include, for each ofone or more geographic regions and/or languages, entries that define:language segments (e.g., sentences, phrases, and/or terms) that areutilized conversationally in that geographic region and/or language; andoptionally indications of tasks that are associated with those languagesegments.

In various implementations, in generating content to present to a user,the automated messaging system may identify a language of the user(e.g., based on a stored attribute of the user, a language utilized in amessaging client executing on a computing device of the user). Thesystem may determine content that is related to a task and that is in asource language, translate that content to the language of the user, andprovide the translated content for presentation to the user. Also, invarious implementations, user input received from the user in a dialogwith the user may be free-form natural language input in a language ofthe user. In some of those implementations, the automated messagingsystem may translate the input from the language of the user to apreferred language of the system and/or a preferred language of aservice entity associated with a task.

In some implementations, a method performed by one or more processorsassociated with an automated messaging system is provided that includesidentifying at least one task for a user that indicates at least oneaction and at least one entity associated with the action. The methodfurther includes initiating a dialog with the user, where the dialog isrelated to the task. The initiating is based on identifying the task, isvia the automated messaging system, and includes providing, forpresentation to the user via a user interface output device of acomputing device of the user, content that is tailored to the task. Themethod further includes: receiving, in response to the providing,free-form natural language input that continues the dialog and that isformulated by the user via a user interface input device of thecomputing device; generating additional content that is tailored to thetask and that is based on the natural language input; and providing, incontinuance of the dialog, the additional content for presentation tothe user via the user interface output device.

These and other implementations of technology disclosed herein mayoptionally include one or more of the following features.

In some implementations, the method further includes determining thatthe user is present at a location, identifying the task based on thetask being associated with the location, and assigning the task to theuser based on determining that the user is present at the location andthat the task is associated with the location.

In some implementations, the method further includes determining thatthe user is present at a location and that the location is not afamiliar location to the user, identifying the task based on the taskbeing associated with individuals that are unfamiliar with the location,and assigning the task to the user based on determining that thelocation is not familiar to the user and that the task is associatedwith individuals that are unfamiliar with the location.

In some implementations, the method further includes identifying sourcelanguage content that is tailored to the task and that is in a sourcelanguage, identifying a language of the user that is different from thesource language, and generating the content by translating the sourcelanguage content from the source language to the language of the user.

In some implementations, the method further includes identifying aprotocol that defines a plurality of parameters related to performanceof the task and generating the content or the additional content tosolicit input related to a group of one or more of the parameters.

In some implementations, the entity indicated by the action is a serviceentity and the first natural language input and the second naturallanguage input are both in a native language of the user. In some ofthose implementations, the method further includes: identifying apreferred language for the service entity, translating at least some ofthe first natural language input and the second natural language inputfrom the native language to the preferred language; and providing thetranslated natural language input to the service entity.

In some implementations, the method further includes assigning the atleast one task to the user based on a current location of the usercorresponding to a location of the entity. In some of thoseimplementations, the content that is tailored to the task includes acommon phrase spoken at the entity in association with the task, thenatural language input is audio of an attempt to verbally speak thecommon phrase, and the second content is feedback based on analysis ofthe audio.

In some implementations, the method further includes identifying aprotocol that defines a plurality of parameters related to performanceof the action for the entity and generating the additional content tosolicit a group of one or more of the parameters. In some of thoseimplementations, the method further includes: receiving, in response toproviding the additional content, additional free-form natural languageinput that continues the dialog and that is formulated by the user viathe user interface input device; and determining one or more values forone or more of the parameters based on the additional free-form naturallanguage input. In some versions of those implementations, the methodfurther includes initiating the action for the entity with thedetermined one or more values.

In some implementations, the method further includes assigning the taskto the user independent of any user interface input provided by the userto the automated messaging system. In some of those implementations,initiating the dialog is in response to user interface input directed tothe automated messaging system, where that user interface input does notexplicitly identify the task.

In some implementations, providing the additional content forpresentation to the user includes providing the additional content forsimultaneous display with the content. The simultaneous display with thecontent may be via a graphical user interface rendered by the computingdevice. In some of those implementations, providing the additionalcontent for presentation to the user includes providing the additionalcontent for simultaneous display with the natural language input. Thesimultaneous display with the natural language input may be via thegraphical user interface rendered by the computing device. In some ofthose implementations, the automated messaging system is implemented atleast in part on one or more computing devices that are remote from thecomputing device of the user.

In addition, some implementations include one or more processors of oneor more computing devices, where the one or more processors are operableto execute instructions stored in associated memory, and where theinstructions are configured to cause performance of any of theaforementioned methods. Some implementations also include anon-transitory computer readable storage medium storing computerinstructions executable by one or more processors to perform any of theaforementioned methods.

It should be appreciated that all combinations of the foregoing conceptsand additional concepts described in greater detail herein arecontemplated as being part of the subject matter disclosed herein. Forexample, all combinations of claimed subject matter appearing at the endof this disclosure are contemplated as being part of the subject matterdisclosed herein.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example environment in whichimplementations disclosed herein may be implemented.

FIG. 2A illustrates an example of providing, based on a task of a user,task related content to a message exchange client of the user toinitiate a dialog with the user via the message exchange client.

FIG. 2B illustrates an example of continuing the dialog initiated inFIG. 2A by generating additional task related content based on the taskof the user and based on natural language input provided by the user incontinuance of the dialog, and providing the additional task relatedcontent to the message exchange client.

FIG. 3A illustrates an example client computing device with a displayscreen displaying an example of dialog that may occur between a user ofthe client computing device and an automated messaging system accordingto implementations described herein.

FIG. 3B illustrates the example client computing device of FIG. 3A, witha display screen displaying another example of dialog that may occurbetween a user of the client computing device and an automated messagingsystem according to implementations described herein.

FIG. 4 illustrates the example client computing device of FIGS. 3A and3B, with a display screen displaying yet another example of dialog thatmay occur between a user of the client computing device and an automatedmessaging system according to implementations described herein.

FIG. 5 is a flowchart illustrating an example method of initiating adialog with a user based on a task of the user, adapting the dialogbased on natural language input provided by the user during the dialog,and optionally initiating performance of the task with one or moreparameters resolved during the dialog.

FIG. 6 illustrates an example architecture of a computing device.

DETAILED DESCRIPTION

Implementations of this specification are directed to utilizing anautomated messaging system to initiate and/or adapt a dialog with atleast one user, where the dialog occurs via user interface input andoutput devices of a computing device of the user. In some of thoseimplementations, the automated messaging system identifies at least onetask associated with the user (e.g., a task that indicates at least oneaction and at least one entity (e.g., a service entity) associated withthe action) and initiates the dialog with the user based on identifyingthe task. The automated messaging system may initiate the dialog toprovide the user with additional information related to the task and/orto determine, based on user input provided during the dialog, values forone or more parameters of the task. In some implementations, theautomated messaging system may further initiate performance of the taskutilizing values of parameters that are determined during the dialog.

In some implementations, the automated messaging system may generatequestions or other prompts during a dialog that solicit particularinformation from the user and may actively adapt the prompts based onuser interface input provided by the user during the dialog. In some ofthose implementations, prompts generated by the automated messagingsystem during a dialog with the user may be configured to extract, fromthe user, values for necessary and/or desired parameters for a task, andmay be adapted during the dialog based on the user's responses duringthe dialog.

In some implementations, in engaging in the dialog with the user, theautomated messaging system may generate one or more prompts based on oneor more protocols configured for one or more service entities and/orbased on one or more entries of a local language database.

In various implementations, in generating content to present to a user,the automated messaging system may identify content that is related to atask and that is in a source language, translate that content to adifferent language that is a language of the user, and provide thetranslated content for presentation to the user. Also, in variousimplementations, user input received from the user in a dialog with theuser may be in a language of the user, and the automated messagingsystem may translate the input to a preferred language of a serviceentity associated with a task.

Now turning to FIG. 1, an example environment in which techniquesdisclosed herein may be implemented is illustrated. The exampleenvironment includes a plurality of client computing devices 106 _(1-N)and an automated messaging system 120. Although automated messagingsystem 120 is illustrated in FIG. 1 as separate from the clientcomputing devices 106 _(1-N), in some implementations all or aspects ofthe automated messaging system 120 may be implemented by one or more ofthe client computing devices 106 _(1-N). For example, client device 106₁ may implement one instance or more aspects of automated messagingsystem 120 and client device 106 _(N) may also implement a separateinstance of those one or more aspects of automated messaging system 120.In implementations where one or more aspects of automated messagingsystem 120 are implemented by one or more computing devices remote fromclient computing devices 106 _(1-N), the client computing devices 106_(1-N) and those aspects of automated messaging system 120 maycommunicate via one or more networks such as a local area network (LAN)and/or wide area network (WAN) (e.g., the Internet).

The client computing devices 106 _(1-N) may include, for example, one ormore of: a desktop computing device, a laptop computing device, a tabletcomputing device, a mobile phone computing device, a computing device ofa vehicle of the user (e.g., an in-vehicle communications system, anin-vehicle entertainment system, an in-vehicle navigation system), or awearable apparatus of the user that includes a computing device (e.g., awatch of the user having a computing device, glasses of the user havinga computing device, a virtual or augmented reality computing device).Additional and/or alternative client computing devices may be provided.In some implementations, a given user may communicate with automatedmessaging system 120 utilizing a plurality of client computing devicesthat collectively form a coordinated “ecosystem” of computing devices.However, for the sake of brevity, examples described in this disclosurewill focus on the user operating a single client computing device 106.

Each of the client computing devices 106 _(1-N) may operate a variety ofdifferent applications, such as a corresponding one of the messageexchange clients 107 _(1-N). Message exchange clients 107 _(1-N) maycome in various forms and the forms may vary across the client computingdevices 106 _(1-N) and/or multiple forms may be operated on a single oneof the client computing devices 106 _(1-N). In some implementations, oneor more of the message exchange clients 107 _(1-N) may come in the formof a short messaging service (“SMS”) and/or multimedia messaging service(“MMS”) client, an online chat client (e.g., instant messenger, Internetrelay chat, or “IRC,” etc.), a messaging application associated with asocial network, a personal assistant messaging service dedicated toconversations with automated messaging system 120, and so forth. In someimplementations, one or more of the message exchange clients 107 _(1-N)may be implemented via a webpage or other resources rendered by a webbrowser (not depicted) or other application of a client computingdevice.

As described in more detail herein, in various implementations theautomated messaging system 120 identifies a task associated with a userof one of the client computing devices 106 _(1-N) and initiates a dialogwith the user that is related to the task by providing, for presentationto the user via the client computing device, content that is tailored tothe task. “Initiation” of a dialog related to a task by the automatedmessaging system 120 does not necessarily mean that the user wasunengaged in any dialog with the system 120 and/or that the user did notprovide any input that caused the system 120 to initiate the dialog.Rather, it means that prior to the initiation of the dialog related tothe task by the system, any ongoing dialog with the automated messagingsystem 120 was not explicitly directed to the task. For example, theuser may be engaged in a dialog with the automated messaging system toget updates on the day's news, weather, etc.—and the system 120 mayinitiate a dialog related to a task during such engagement. In someimplementations, the automated messaging system 120 may initiate adialog with a user that is related to a task without the user havingever provided any input (e.g. natural language input in prior dialogswith the system 120) related to the task directly to the automatedmessaging system 120. For example, the automated messaging system 120may initiate the dialog based on a current and/or past location of theuser, based on user interactions with other systems (e.g., an emailsystem, a search engine, a calendar system, and/or other system separatefrom the automated messaging system 120).

Each of the client computing devices 106 _(1-N) and automated messagingsystem 120 may include one or more memories for storage of data andsoftware applications, one or more processors for accessing data andexecuting applications, and other components that facilitatecommunication over a network. The operations performed by one or more ofthe client computing devices 106 _(1-N) and/or by the automatedmessaging system 120 may be distributed across multiple computersystems. Automated messaging system 120 may be implemented as, forexample, computer programs running on one or more computers in one ormore locations that are coupled to each other through a network.

Automated messaging system 120 may include a natural language processor122, a user attributes engine 124, a task engine 126, a translationengine 128, a message generation engine 130, and a task parametersmodule 132. In some implementations, one or more of engines 122, 124,126, 128, 130, and/or module 132 may be omitted. In someimplementations, all or aspects of one or more of engines 122, 124, 126,128, 130, and/or module 132 may be combined. In some implementations,one or more of engines 122, 124, 126, 128, 130, and/or module 132 may beimplemented in a component that is separate from automated messagingsystem 120. For example, one or more of 122, 124, 126, 128, 130, and/or132, or any operative portion thereof, may be implemented in a componentthat is executed by of the client computing devices 106 _(1-N).

Natural language processor 122 processes natural language inputgenerated by users via client computing devices 106 _(1-N) and generatesannotated output for use by one or more other components of theautomated messaging system 120. For example, the natural languageprocessor 122 may process natural language free-form input that isgenerated by a user via one or more user interface input devices ofclient device 106 ₁. The generated annotated output includes one or moreannotations of the natural language input and optionally one or more(e.g., all) of the terms of the natural language input.

In some implementations, the natural language processor 122 isconfigured to identify and annotate various types of grammaticalinformation in natural language input. For example, the natural languageprocessor 122 may include a part of speech tagger configured to annotateterms with their grammatical roles. For example, the part of speechtagger may tag each term with its part of speech such as “noun,” “verb,”“adjective,” “pronoun,” etc. Also, for example, in some implementationsthe natural language processor 122 may additionally and/or alternativelyinclude a dependency parser configured to determine syntacticrelationships between terms in natural language input. For example, thedependency parser may determine which terms modify other terms, subjectsand verbs of sentences, and so forth (e.g., a parse tree)—and may makeannotations of such dependencies.

In some implementations, the natural language processor 122 mayadditionally and/or alternatively include an entity tagger configured toannotate entity references in one or more segments such as references topeople, organizations, locations, and so forth. The entity tagger mayannotate references to an entity at a high level of granularity (e.g.,to enable identification of all references to an entity class such aspeople) and/or a lower level of granularity (e.g., to enableidentification of all references to a particular entity such as aparticular person). The entity tagger may rely on content of the naturallanguage input to resolve a particular entity and/or may optionallycommunicate with a knowledge graph or other entity database to resolve aparticular entity.

In some implementations, the natural language processor 122 mayadditionally and/or alternatively include a coreference resolverconfigured to group, or “cluster,” references to the same entity basedon one or more contextual cues. For example, the coreference resolvermay be utilized to resolve the term “it” to “Asia Village” in thenatural language input “I like Asia Village. Book it please.”

In some implementations, one or more components of the natural languageprocessor 122 may rely on annotations from one or more other componentsof the natural language processor 122. For example, in someimplementations the named entity tagger may rely on annotations from thecoreference resolver and/or dependency parser in annotating all mentionsto a particular entity. Also, for example, in some implementations thecoreference resolver may rely on annotations from the dependency parserin clustering references to the same entity. In some implementations, inprocessing a particular natural language input, one or more componentsof the natural language processor 122 may use related prior input and/orother related data outside of the particular natural language input todetermine one or more annotations. For example, a first message of auser in a dialog with the automated assistant may be “do they have anappointment for tomorrow at noon” and a subsequent message of the usermay be “book it for then”. In processing “book it for then”, thecoreference resolver may resolve “it” to “appointment” and may resolve“then” to “tomorrow at noon” utilizing the prior input of “do they havean appointment for tomorrow at noon”.

The user attributes engine 124 determines one or more attributes of auser who is engaged in a dialog with the automated messaging system 120and/or with whom the automated messaging system 120 may initiate adialog, and provides those attributes to one or more other components ofautomated messaging system 120. The attributes may be utilized by theother components of the automated messaging system 120, for example, indetermining a task to assign to a user, in determining values for one ormore parameters for the task, in determining when to initiate a dialogwith the user, in generating output for a dialog with the one or moreusers, and/or in determining whether to translate natural languageoutput provided to the user. The user attributes engine 124 is incommunication with a user attributes database 152 that may store one ormore user attributes. In various implementations, the user attributesengine 124 and/or user attributes database 152 may be implemented inwhole or in part on client computing devices 106 _(1-N) and/or maydetermine one or more user attributes based on data provided by clientcomputing devices 106 _(1-N). Some examples of user attributes that maybe determined by user attributes engine 124 include a current locationof the user (e.g., based on GPS or other location data), pastlocation(s) of the user (e.g., a “home” of the user, locationspreviously visited by the user), language(s) of the user, a timeconstraint of the user (e.g., based on an electronic calendar of theuser), and a user profile of the user (e.g., based on user activitiesacross a plurality of Internet services).

The task engine 126 identifies a task for a user and provides messagegeneration engine 130 with information related to that task (e.g., anidentifier of an action and/or one or more service entities for thetask, one or more predetermined values of parameters for the task) andoptionally provides the message generation engine 130 with an indicationof when it is appropriate for the engine 130 to initiate a task relateddialog with the user. The task engine 126 may utilize one or more ofvarious resources to determine a task for a user such as task database154, user attributes provided by user attributes engine 124, and/or pastnatural language input provided by the user to the automated messagingsystem 120.

Task database 154 may be provided on one or more non-transitory computerreadable media and may define a plurality of tasks that each indicate atleast one action and at least one entity associated with the action.Some examples of tasks include scheduling an appointment with agovernment agency, requesting a service from a business, ordering aproduct from a business, ordering food in a restaurant, obtainingtransportation via a taxi, meeting a client, setting up a utilityservice, buying a movie ticket, etc. Tasks may be defined in taskdatabase 154 with various levels of granularity. For example, a task maybe defined as “schedule any appointment with any government agency” ormore narrowly as “schedule an appointment with a particular governmentagency” or “schedule a particular type of appointment with a particulargovernment agency”. In some implementations, one or more tasks of taskdatabase 154 may each be associated with one or more particular usersand/or one or more tasks of task database 154 may be associated with oneor more particular criteria that may instantiate the task. In someimplementations, all or aspects of task database 154 may be incorporatedas part of one or more of the client computing devices 106 _(1-N).

In some implementations, the task engine 126 may identify a task for auser based on that task being already associated with the user in taskdatabase 154. For example, task database 154 may include one or moreentries that are specific to the user and that may be created inresponse to one or more computing-based actions that are by the userand/or that are directed to the user, such as one or more actionsperformed by the user via one or more of the client computing devices106 _(1-N) utilized by the user. For instance, task database 154 mayinclude one or more calendar entries, reminder entries, and/or otherentries that are personal to the user (e.g., not accessible to otherusers without the user's permission) and that may be deliberatelycreated by the user via interaction by the user with one or moreapplications of a computing device (e.g., a calendar application).

Also, for instance, task database 154 may include one or more entriesthat are not deliberately created by the user, but that areinferentially created by one or more computing devices based on one ormore actions performed by the user via one or more of the clientcomputing devices 106 _(1-N). For example, assume the user has performedmultiple Internet searches related to removing old furniture, such assearches of “how do I get rid of old furniture”, “who picks upfurniture”, and “furniture removal.” In such an example, an entry for afurniture removal task may optionally be created for the user in taskdatabase 154 without the user deliberately creating the entry. As yetanother instance, task database 154 may include one or more entries thatare not deliberately created by the user, but that are created based onone or more computing-actions directed to the user, such as based oncontent of emails, text messages, or other communications sent to theuser.

In some implementations, the task engine 126 may identify a task for auser without the task being already associated with the user in taskdatabase 154. For example, in some implementations task database 154 mayinclude tasks that are associated with one or more criteria that mayinstantiate the task. Task engine 126 may determine one of those tasksas a task for the user based on conformance between those criteria anduser attributes provided by user attributes engine 124. For example,task database 154 may include a task of “ordering food” that isassociated with criteria of being in a restaurant, and being in alocation with a primary language that is not a language spoken by a userand/or is not the user's primary language. Task engine 126 may identifythe “ordering food” task for the user based on user attributes providedby user attributes engine 124 indicating that the current location ofthe user is in a restaurant and that the current location is in ageographic area with a language that is not spoken by the user. Asanother example, task database 154 may include a task of scheduling freejunk removal with a particular city that is associated with criteria ofbeing a new mover to that particular city. Task engine 126 may identifythe “scheduling free junk removal” task based on user attributesprovided by user attributes engine 124 indicating that the user hasrecently moved to that particular city. As yet another example, taskdatabase 154 may include a task of purchasing a subway ticket in aparticular city that is associated with criteria of being a new visitorto that particular city. Task engine 126 may identify the “purchase asubway ticket” task based on user attributes provided by user attributesengine 124 indicating that the user is present in the particular cityand has not previously visited the particular city.

Translation engine 128 may translate natural language input provided bya user to another language and/or may translate natural language outputgenerated by message generation engine 130 to a language spoken by arecipient user of the output (e.g., a native language of the recipientuser). In some implementations, the translation engine 128 may utilizeone or more user attributes provided by user attributes engine 124 todetermine a language that is spoken by a user, such as a native languageof the user.

In some implementations, message generation engine 130 initiates a taskrelated dialog with a user, via an associated client computing device ofthe user, and initiates the dialog based on identifying that the task isassigned to the user. For example, the message generation engine 130 mayinitiate dialog related to a task based on output provided by taskengine 126 indicating that the task is a task of the user. As describedwith respect to translation engine 128, in various implementations themessage generation engine 130 may engage in the dialog with the user viathe translation engine 128. For example, the engine 128 may translatenatural language output generated by the message generation engine 130before it is presented to a user and/or may translate natural languageinput formulated by the user before it is provided to the messagegeneration engine 130 and/or before it is provided to a service entityas part of a communication to initiate a task with the service entity.

The message generation engine 130 may initiate the task related dialogto provide the user with additional information related to the taskand/or to determine, based on user input provided during the dialog,values for one or more parameters of the task. In some implementations,the message generation engine 130 may generate questions or otherprompts during a dialog that are configured to extract, from the user,values for necessary and/or desired parameters for a task, and may beadapted during the dialog based on the user's responses during thedialog.

The message generation engine 130 utilizes one or more resources ingenerating questions or other prompts to solicit information from auser. For example, the message generation engine 130 may utilize currentand/or past natural language input of the user during the dialog,annotations of that input provided by natural language processor 122,user attribute(s) provided by user attributes engine 124, values fortask parameters or other task information provided by task engine 126,entity protocols of entity protocols database 156, and/or one or moreentries of local language database 158. Message generation engine 130may include a task parameters module 132 that determines what parametersfor a task have been validly specified by natural language inputprovided by a user during a dialog, and stores values for thoseparameters in association with the task. The message generation engine130 may utilize such stored values to prevent generation of naturallanguage output that prompts the user to specify any parameters for atask that have already been validly specified for that task. The taskparameters module 132 may further communicate the task and values ofparameters for the task (values for parameters determined by task engine126 and/or determined during dialog) to one or more other computingsystems to initiate performance of the task.

Entity protocols database 156 may be provided on one or morenon-transitory computer readable media and defines a plurality ofprotocols that are each applicable to one or more entities and/or one ormore actions of a task. Each protocol defines one or more necessaryand/or desired parameters to perform an associated action of a taskand/or to perform the associated action with associated serviceentity/entities. For example, a first protocol may be a general protocolassociated with a restaurant reservation action and associated with allrestaurants that take reservations. The first protocol may definenecessary parameters for the action such as a date of the reservation, atime of the reservation, and the number of people for the reservation.Also, for example, a second protocol may be a second protocol associatedwith a restaurant reservation action and associated with a subset ofrestaurants that take reservations, such as a specific restaurant. Thesecond protocol may define necessary and/or desired parameters for thespecific restaurant such as whether the user desires indoor or outdoorseating, a booth or a table, whether the user has dietary restrictions,etc.

Local language database 158 may be provided on one or morenon-transitory computer readable media and includes, for each of one ormore geographic regions and/or languages, entries that define: languagesegments (e.g., sentences, phrases, and/or terms) that are utilizedconversationally in that geographic region and/or language; andoptionally tasks that are associated with those language segments. Forexample, entries for a geographic region within the United States mayinclude entries of: “I would like a ride to [location]”, “what is theestimated fare to [location]”, “thank you for the ride” that are allassociated with one or more tasks such as a task of obtainingtransportation from a taxi driver. Also, for example, entries for ageographic region within the United States may include entries of: “Iwould like to order [food]” that is associated with a visiting arestaurant task, an ordering food task, and/or other task; an entry of“Can you show me where the restrooms are?” that is associated with avisiting a restaurant task, a visiting a service entity task, and/orother task; etc. It is noted that the words in brackets “[ ]” in thepreceding examples indicate a class of words that may be “filled in” bymessage generation engine 130 with a description of that class and/orwith a particular word(s) that is a member of that class and that may bedetermined based on natural language input provided by a user. Languagesegments of local language database 158 may include textual segments andmay also include audible files and/or links to audible files, such as“.wav” files, “.mp3” files, “.mpeg” files and/or files in other formatthat, when executed by a computing device, cause the computing device togenerate corresponding audio output.

The message generation engine 130 may utilize entries of local languagedatabase 158 in determining content to provide to a user in initiatingand/or continuing a dialog related to a task. For example, as describedin more detail herein, for a given task of a user the message generationengine 130 may identify one or more language segments that areassociated with that task in database 158, and that are associated witha current location of the user and/or associated with a language at thecurrent location of the user. The message generation engine 130 mayaudibly and/or visually present those language segments to the user aspart of content provided in initiating a dialog with the user related toa task and/or as part of additional content provided in continuance ofthe task related dialog with the user.

Turning now to FIGS. 2A and 2B, additional description is provided ofvarious components of automated messaging system 120 and messageexchange client 107 ₁. Some description of FIGS. 2A and 2B is providedwith examples from FIG. 3A. FIG. 3A illustrates the computing device 106₁ of FIG. 1 with a display screen 140 displaying an example of dialogthat may occur between a user of the client computing device 106 ₁ andthe automated messaging system 120 according to implementationsdescribed herein. In particular, the dialog includes task relatedcontent 390A, 390B, 390C, and 390D that may each be generated by theautomated messaging system 120 according to implementations describedherein and includes user inputs 380A and 380B. The display screen 140further includes a textual reply interface element 384 that the user mayselect to generate user input via a virtual keyboard and a voice replyinterface element 385 that the user may select to generate user inputvia a microphone. The display screen 140 also includes system interfaceelements 381, 382, 383 that may be interacted with by the user to causethe computing device 106 ₁ to perform one or more actions.

FIG. 2A illustrates an example of providing, based on a task 202 of auser, task related content 203A to a message exchange client 107 ₁ ofthe user to initiate a dialog with the user via the message exchangeclient 107 ₁.

In FIG. 2A, task engine 126 identifies a task 202 of a user based ontask database 154 and/or based on one or more user attributes 201provided by user attributes engine 124. The task engine 126 provides thetask 202 to message generation engine 130.

As a working example, assume task engine 126 determines a task 202 of“removing old furniture” that indicates the action of “removingfurniture” and indicates a particular service entity of “the city ofSunnyvale” for the action. In some implementations of the workingexample, task engine 126 may identify the task based on it beingassociated with the user in task database 154 and/or based on userattributes 201 provided by user attributes engine 124.

For example, assume the user has submitted multiple searches to aseparate search engine that are related to removing furniture, such assearches of “how do I get rid of furniture”, “who picks up furniture”,and “furniture removal.” In such an example, a general furniture removaltask may optionally be associated with the user in task database 154based on those searches. In some implementations of the working example,task engine 126 may identify the city of Sunnyvale as a particularservice entity for the furniture removal task based on user attributes201 provided by user attributes engine 124. For example, the task engine126 may determine, based on the user attributes 201, that the user is aresident of the city of Sunnyvale, and may further determine, based ontask database 154 and/or other resource, that a furniture removal taskfor the city of Sunnyvale is associated with mandatory criteria of beinga resident to that particular city. Also, for example, the task engine126 may determine, based on the user attributes 201, that the user is anew mover to the city of Sunnyvale, and may further determine, based ontask database 154 and/or other resource, that a furniture removal taskfor the city of Sunnyvale is associated with optional criteria of beinga new mover to that particular city (e.g., since new movers may not yetbe familiar with the city's services). Based on the conformance betweenthe user attributes 201 and the criteria for the furniture removal taskfor the city of Sunnyvale, the task engine 126 may identify that task asa task for the user.

Message generation engine 130 utilizes the task 202 to identify anentity protocol from entity protocols database 156 and/or a languagesegment from local language database 158 for use in generating taskrelated content 203A. In some implementations, the task related content203A is natural language output, such as a natural language output thatis a prompt to solicit user interface input from the user for use indetermining whether the user wants help in performing the task (e.g.,natural language output of “It seems you need to perform [task]. Wouldyou like me to help?”) and/or in determining necessary and/or desiredparameters for the task 202 ((e.g., natural language output of “It seemsyou need to perform [task]. I can help. Let me know [task parameter(s)]if so”).

The task related content 203A is provided to the message exchange client107 ₁ for audible and/or visual presentation to the user via a userinterface output device of the client computing device 106 ₁. In someimplementations, the task related content 203A is natural languageoutput and that output is translated by translation engine 128 to alanguage of the user of the message exchange client 107 ₁. In thoseimplementations, the translated output is provided to the messageexchange client 107 ₁. In some other implementations, the messageexchange client 107 ₁ may incorporate the translation engine 128 andperform the translation.

In some implementations, the message generation engine 130 utilizes anaction and/or an entity indicated by task 202 to determine an entityprotocol for utilization in generating an automated message. Forexample, for a “making a restaurant reservation” task that indicates arestaurant reservation action for restaurant candidate entities, theengine 130 may identify a general entity protocol that is applicable toall restaurants for making reservations. The general entity protocol maybe identified based on it being assigned to the “making a restaurantreservation” action and/or to “restaurant” entities in the entityprotocols database 156. The general entity protocol may define one ormore necessary and/or desired parameters to perform the task such as: adate of the reservation, a time of the reservation, the number of peoplefor the reservation, and the restaurant for the reservation. The engine130 may generate the task related content 203A to solicit informationregarding one or more of those parameters. In some implementations, oneor more of the parameters of the general entity protocol and/or otherprotocols may include or otherwise indicate text for inclusion inprompts for those parameters. For example, a parameter related to anumber of people for the reservation may include text such as “for howmany” or “how many people”.

In some implementations, the message generation engine 130 includes thetask parameters module 132 that determines what parameters, if any, arealready specified by the task 202. For example, task 202 may be providedby task engine 126 with values for one or more parameters alreadyspecified such as the particular service entity for performance of thetask 202. The message generation engine 130 may utilize the alreadyspecified parameter(s) to prevent generation of task related content203A that prompts the user to specify the already specified parameters.

Continuing with the working example, message generation engine 130 maygenerate task related content 390A of FIG. 3A in response to a task 202of “removing old furniture” that indicates the action of “removingfurniture” and indicates a particular service entity of “the city ofSunnyvale” for the action. In some implementations, the messagegeneration engine 130 may generate the content 390A based on a protocolof entity protocols database 156. For example, database 156 may includea specific entity protocol associated with the action of “removingfurniture” and associated with the particular service entity of “thecity of Sunnyvale.” In some of those implementations, the protocol mayinclude some or all of the natural language text of content 390A and anindication that the text should be provided to initiate a dialog withthe user that is related to the task. Although the content 390A is shownin English in FIG. 3A, in some implementations it may be translated bytranslation engine 128 to another language and the translation providedto the user as the content 390A.

FIG. 2B illustrates an example of continuing the dialog initiated inFIG. 2A by generating additional task related content 203B based on thetask 202 (FIG. 2A) (e.g., based on an entity protocol selected based onthe task) and based on natural language input 204 provided by the userin continuance of the dialog. The additional task related content 203Bis provided to the message exchange client 107 ₁ for visual and/oraudible presentation to the user.

In FIG. 2B, in response to the task related content 203A of FIG. 2A, auser utilizes one or more user interface input devices of the computingdevice 106 ₁ to provide responsive natural language input 204 to messageexchange client 107 ₁, which transmits the natural language input 204 tonatural language processor 122. The natural language input 204 may befree-from input as described herein and may be, for example, typed inputprovided by the user via a physical or virtual keyboard of a computingdevice or spoken input provided by the user to a microphone of thecomputing device. In implementations where the natural language input204 is spoken input, it may optionally be transcribed to textual inputby the computing device and/or by the natural language processor 122.

Continuing with the working example, the natural language input 204 maybe “Sure! I have 2 sofas and 4 chairs” as illustrated by user input 380Aof FIG. 3A—and may be provided by the user in continuance of the dialogthat was initiated by the message generation engine 130 by providing thetask related content 390A.

The natural language processor 122 processes the natural language input204 and generates various annotations of the natural language input. Thenatural language processor 122 provides annotated output (e.g., terms ofthe natural language input 204 and generated annotations) 205 to messagegeneration engine 130.

Continuing with the working example, the natural language input 204 maybe “Sure! I have 2 sofas and 4 chairs” as illustrated by user input 380Aof FIG. 3A, and the natural language processor 122 may annotate “Sure!”as an affirmative response, annotate “sofas” an “chairs” as furnitureentities and annotate “2” as a quantity associated with “sofas” and “4”as a separate quantity associated with “chairs”. The natural languageprocessor 122 may provide one or more of those terms and/or theannotations as the annotated input 205.

The message generation engine 130 utilizes the annotated input 205 andan entity protocol from entity protocols database 156 and/or a languagesegment from local language database 158 for use in generatingadditional task related content 203B. For example, the messagegeneration engine 130 may analyze the annotated input 205 to determinewhether the annotated input 205 indicates a desire of the user forfurther task related content. For instance, if the input 205 indicates adesire for further task related content, the message generation engine130 may utilize the entity protocol utilized in FIG. 2A to generateadditional task related content 203B that prompts the user to providevalues for one or more desired and/or necessary parameters defined bythe entity protocol. As described herein, the task parameters module 132may also determine what parameters, if any, for an action are validlyspecified by the natural language input 204 (and/or were alreadyspecified by the task 202), and store the specified values for thoseparameters. The message generation engine 130 may utilize thedetermination of the module 132 to prevent generation of additional taskrelated content 203B that prompts the user to specify those parametersagain. For example, where the message generation engine 130 utilizes aprotocol that defines parameters that include a parameter for “date ofappointment”, the module 132 may assign a particular date for thatparameter if the natural language input 204 indicates that particulardate and that particular date is valid for that parameter. Based on theassignment, that parameter may be ignored by the engine 130 and theadditional task related content 203B generated based on other parametersinstead.

Continuing with the working example, in response to received naturallanguage input 204 of “Sure! I have 2 sofas and 4 chairs”, the messagegeneration engine 130 may generate additional task related content 203Bof “Sorry, only two items allowed per collection”. In someimplementations, the engine 130 may generate the content 203B based oninput provided by the task parameters module 132. For example, themodule 132 may utilize the annotated input 205 to determine that sixfurniture items are specified in natural language input 204 for aparameter (of the protocol utilized in FIG. 2A) that has a maximum valueof two furniture items—and provide an indication to message generationengine 130 that the specified values for the parameters are not valid.The message generation engine 130 may generate the content 390B based onthe parameter for the protocol and based on the maximum value specifiedfor that parameter in the protocol.

-   The additional task related content 203B is provided to the message    exchange client 107 ₁ for audible and/or visual presentation to the    user via a user interface output device of the client computing    device 106 ₁. In some implementations, the additional task related    content 203B is natural language output and that output is    translated by translation engine 128 to a language of the user of    the message exchange client 107 ₁. In those implementations, the    translated output is provided to the message exchange client 107 ₁.

Continuing with the working example, assume that another instance of theexample of FIG. 2B occurs after the message generation engine 130 hasprovided the additional task related content 390B. In particular, assumethat the user provides the further additional user input 380B of FIG. 3Athat indicates “OK. I'll do the 2 sofas first”. In some of thoseimplementations, the message generation engine 130 may generate furtheradditional task related content 390C of FIG. 3A. For example, the taskparameters module 132 may determine that user input 380B indicates avalid value (two) for the quantity of furniture items parameter of theprotocol, and message generation engine 130 may generate the additionaltask related content 390C of FIG. 3A to solicit user input for an“appointment date” parameter of the protocol that does not yet have avalid value assigned.

Additional task related content 390C includes information related to theappointment date parameter (e.g., “you'll need to be at home”) that maybe determined (e.g., defined in) the protocol, includes a prompt (“Whichdate do you want”), and includes three selectable options of validvalues (dates) for the appointment date parameter. In someimplementations, the message generation engine 130 may determine thedates for the selectable options by referencing one or more databasesthat are updated to reflect available service dates for the city ofSunnyvale, by sending a communication to a computing system and/orperson associated with the city of Sunnyvale and receiving the dates inreply, and/or utilizing other techniques.

A user may select one of the selectable options through interaction withits corresponding graphical element (e.g., by tapping the graphicalelement) and/or by further natural language input, such as “June 19^(th)please”. For example, as indicated in FIG. 3A, assume the user “taps” orotherwise selects the graphical element that includes “6/19”. Thatfurther input may be provided to the message generation engine 130 whichmay determine, via task parameters module 132, that all parameters forthe task have been specified with valid values. In response, the messagegeneration engine 130 may provide further additional task relatedcontent 390D indicating that the task has been initiated (“Reserved forJune 19^(th)”) and providing further information related to the task (“Aconfirmation letter . . . inbox”). In some implementations, the taskparameters module 132 may initiate the task by communicating specifiedvalues of parameters for the task to one or more other computing systems(e.g., controlled by the city of Sunnyvale) to initiate performance ofthe action by those computing systems and/or by one or more humansreceiving user interface output from those computing systems.

FIG. 3B illustrates the computing device 106 ₁ of FIG. 1 with a displayscreen 140 displaying another example of dialog that may occur between auser of the client computing device 106 k and the automated messagingsystem 120 according to implementations described herein. In particular,FIG. 3B illustrates one example of how the dialog of FIG. 3A may havediffered in response to the user providing different natural languageuser interface input than that illustrated in FIG. 3A. In other words,it illustrates one example of how the automated messaging system 120 mayadapt a dialog based on user interface input that is provided during thedialog.

In FIG. 3B, the automated messaging system 120 initiates the dialog withtask related content 390E that is the same as the task related content390A of FIG. 3A. In FIG. 3B, the user responds with input 380C thatincludes only “Sure!” and that does not specify a quantity of items asin input 380B of FIG. 3A. The automated messaging system 120 providesfurther task related content 390F that may be generated based on thequantity of furniture items parameter of the protocol as in FIG. 3A, butincludes different content since the user did not specify an invalidquantity parameter in input 380C as the user did in input 380B of FIG.3A.

In FIG. 3B, the user responds with input 380D of “A sofa and a TV.” Themessage generation engine 130 responds with further task related content390G of “Sorry, no TVs. Just the sofa or add another item?” Thisresponse may be based on a further parameter of the protocol thatspecifies televisions are not available for removal.

The dialog of FIG. 3B continues with further user input 380E and furthertask related content 390D that is tailored to the further user input380E.

Turning now to FIG. 4, further examples of the message generation engine130 utilizing the local language database 158 to generate task relatedcontent is provided. FIG. 4 illustrates the computing device 106 ₁ ofFIG. 1 with a display screen 140 displaying yet another example ofdialog that may occur between a user of the client computing device 106i and the automated messaging system 120 according to implementationsdescribed herein. The display screen 140 in FIG. 4 further includes atextual reply interface element 484 that the user may select to generateuser input via a virtual keyboard and a voice reply interface element485 that the user may select to generate user input via a microphone.The display screen 140 also includes system interface elements 481, 482,483 that may be interacted with by the user to cause the computingdevice 106 ₁ to perform one or more actions.

In FIG. 4, task engine 126 has identified a task of “ordering food in arestaurant” that indicates the action of “ordering food” and indicates aservice entity of “a restaurant” for the action. In someimplementations, task engine 126 may identify the “ordering food in arestaurant” task based on determining that one or more user attributesof the user provided by user attributes engine 124 conform to one ormore criteria for that task. For example, assume the “ordering food in arestaurant” task includes criteria of being in a restaurant and being ina geographic region with a primary language that differs from a languageof the user (e.g., the user's primary language). Further assume that theuser attributes of the user indicate that the user is in a restaurantand that the restaurant is in a geographic region whose primary languageis different from any languages for the user. For instance, assume theuser is in a Spanish speaking country and the only language spoken bythe user is English. The task engine 126 may identify the “ordering foodin a restaurant” task based on such conformance between the userattributes and the criteria for the task.

Message generation engine 130 utilizes the task of “ordering food in arestaurant” to generate the task related content 490A that promptswhether the user would like help performing the task (“Would you likehelp ordering?”).

In response to the task related content 490A of FIG. 4, a user utilizesone or more user interface input devices of the computing device 106 ₁to provide responsive natural language input 480A of “Yes. I'd like toorder some chicken”.

The message generation engine 130 uses the task and the user's currentlocation (as indicated by user attributes) to identify a naturallanguage entry of “Me gustaria [food] favor” from local languagedatabase 158. For example, that natural language entry may be identifiedbased on it being associated in the database 158 with a task of“ordering food” and being associated with a geographic region thatcorresponds to the user's current location. The message generationengine 130 generates content 490B that includes natural language outputbased on the natural language entry, and that includes “polio”substituted for the placeholder “[food]” based on “polio” being atranslation of “chicken” that was indicated in input 480A.

The content 490B further includes a selectable graphical element (“Clickto hear an example”) that, when selected by the user, will cause “Megustaria polio favor” to be audibly presented to the user via a speakerof the computing device 106 ₁. In some implementations, “Me gustariapolio favor” may be audibly presented to the user automatically in lieuof or in addition to the display of “Me gustaria polio favor”.

The content 490C further includes a selectable graphical element (“Clickhere to try saying it”) that, when selected by the user, will causespoken input provided by the user to be captured by a microphone of thecomputing device 106 ₁. The spoken input can be analyzed by theautomated messaging system 120 and/or other component to determine if itmatches “Me gustaria polio favor”. If it matches, the automatedmessaging system 120 may provide feedback to the user, via further taskrelated content (not illustrated), that indicates the user properlyrecited the language segment. If it doesn't match, the automatedmessaging may provide feedback to the user, via further task relatedcontent (not illustrated), that indicates the user did not properlyrecite the language segment, that indicates the term(s) that were notproperly recited, and/or that audibly provides the phrase to the userand/or offers the user another opportunity to hear the phrase.

Although a particular example of utilizing an entry from local languagedatabase 158 is illustrated in FIG. 4, many variations are contemplated.For example, in some implementations in response to identifying a taskof a user, the automated messaging system 120 may initiate the dialog byproviding one or more contextually appropriate “foreign language”phrases without first prompting the user to confirm the user would liketo be provided with those phrases. For instance, the initiation of thedialog of FIG. 4 may be “It seems like you are in a restaurant. If youwould like to order food say ‘Me gustaria, [the food you want], favor’.For example, to order chicken say ‘Me gustaria polio favor’”. Theinitiation of the dialog may further optionally automatically audiblypresent at least some content and/or automatically listen for a user'sattempt to recite at least some of the content.

As another example, based on a user being in a restaurant in ageographic region with a primary language that differs from that of theuser (or based on a calendar entry of the user indicating the user willsoon be in such a restaurant), the task engine 126 may identify a moregeneral task of “communicate in a restaurant”. Further, the messagegeneration engine 130 may identify, from local language database 158,multiple language segments that are related to that task such aslanguage segments of “gracias” (thank you), “donde esta el bano” (whereis the bathroom), “Me gustaria, [the food you want], favor” (I wouldlike [the food you want] please). The message generation engine 130 mayinitiate the dialog with content of “Let me know if you would like tohear helpful local language phrases to use in a restaurant.” In responseto affirmative user input, the message generation engine 130 may presentthe user with one or more of the identified language segments (e.g., theN most popular language segments), along with an English explanation ofthose language segments.

A graphical user interface for engaging in a dialog is illustrated inFIGS. 3A, 3B, and 4, and described in some other examples herein.However, in some implementations the prompts provided by automatedmessaging system 120 may be conveyed to the user audibly (via speaker(s)of the computing device of the user) without necessarily displayingthose prompts. Moreover, in some version of those implementations theuser input may be provided via the user providing verbal user interfaceinput. As one particular example, in some implementations a user mayengage in a dialog with the automated messaging system utilizing acomputing device that does not include any display.

FIG. 5 is a flowchart illustrating an example method 500 of initiating adialog with a user based on a task of the user, adapting the dialogbased on natural language input provided by the user during the dialog,and optionally initiating performance of the task with one or moreparameters resolved during the dialog. For convenience, the operationsof the flow chart are described with reference to a system that performsthe operations. This system may include various components of variouscomputer systems, such as automated messaging system 120. Moreover,while operations of method 500 are shown in a particular order, this isnot meant to be limiting. One or more operations may be reordered,omitted or added.

At block 552, the system identifies a task of a user.

At block 554, the system initiates a dialog with the user by providingcontent tailored to the task for presentation to the user via a userinterface output device of a computing device of the user. In someimplementations, the system may identify a protocol that is associatedwith a task (e.g., associated with an action and/or entity indicated bythe task) and may generate the content based on the protocol. In someimplementations, the system may identify one or more language segmentsthat are associated with a task and may generate the content based onthe language segment(s) and/or may generate the content to determinewhether the user would like additional task content related to thelanguage segments.

At block 556, the system receives, in response to providing the contentat block 554, natural language input that is formulated by the user viaa user interface input device of the computing device of the user (or ofanother computing device of the user). In some implementations thenatural language input is free-form input formulated by a user via theuser interface input device.

At block 558, the system generates additional content that is tailoredto the task and that is based on the natural language input received inblock 556. In some implementations, the system may generate theadditional content based on a protocol associated with the task, such asthe protocol optionally identified at block 554. For example, the systemmay generate the additional content to solicit user input related totask parameters defined in the protocol. In such an example, the systemmay generate the additional content based on the natural language inputreceived in block 556 indicating that the user desires additionalcontent related to the task and/or may generate the additional contentbased on a task parameter that did not have a valid value defined by thenatural language input received in block 556. In some implementations,the content of block 554 includes a language segment associated with thetask, the input of block 556 is an attempt by the user to verbally speakthe language segment, and the additional content of block 558 isfeedback directed to the attempt based on analysis of the input of block556.

At block 560, the system provides the additional content forpresentation to the user via the user interface output device of thecomputing device of the user.

At optional block 562, the system receives, in response to providing theadditional content, further natural language input formulated by theuser via a user interface input device.

At optional block 564, the system determines whether one or more taskparameters (e.g., all task parameters or all necessary task parameters)for the task of block 552 are resolved by values provided with the taskat block 552 and/or values determined based on the natural languageinput provided by the user at blocks 556 and/or 562. For example, thesystem may determine whether values have been defined for all necessarytask parameters defined in a protocol for the task.

If the system determines all of the task parameters have not beenresolved, the system proceeds to block 566 and generates furtheradditional content to resolve the unresolved task parameter(s). In someimplementations, the additional content is based on the protocoloptionally determined at block 554 and/or 558. For example, the systemmay generate the additional prompt to solicit one or more particularparameters for the protocol determined at block 554, in view of thoseparticular parameters not being specified by the input received atblocks 556 and 562.

After generating the additional prompt at block 566, the system thenproceeds to blocks 560 and 562, then again determines at block 564whether one or more task parameters (e.g., all task parameters or allnecessary task parameters) for the task of block 552 are resolved basedon yet further input that has been received at the second iteration ofblock 562.

If the system determines the task parameters can be resolved at block564 (either at a first iteration of block 564 or a subsequentiteration), the system proceeds to optional block 568 where the systeminitiates performance of the task. In some implementations, the systemmay communicate the task, with values for one or more resolvedparameters, to one or more other computing systems to initiateperformance of the task by those computing systems and/or by one or morehumans receiving user interface output from those computing systems.

FIG. 6 is a block diagram of an example computing device 610 that mayoptionally be utilized to perform one or more aspects of techniquesdescribed herein. In some implementations, one or more of the clientcomputing devices 160 _(1-N), automated messaging system 120, and/orother component(s) may comprise one or more components of the examplecomputing device 610.

Computing device 610 typically includes at least one processor 614 whichcommunicates with a number of peripheral devices via bus subsystem 612.These peripheral devices may include a storage subsystem 624, including,for example, a memory subsystem 625 and a file storage subsystem 626,user interface output devices 620, user interface input devices 622, anda network interface subsystem 616. The input and output devices allowuser interaction with computing device 610. Network interface subsystem616 provides an interface to outside networks and is coupled tocorresponding interface devices in other computing devices.

User interface input devices 622 may include a keyboard, pointingdevices such as a mouse, trackball, touchpad, or graphics tablet, ascanner, a touchscreen incorporated into the display, audio inputdevices such as voice recognition systems, microphones, and/or othertypes of input devices. In general, use of the term “input device” isintended to include all possible types of devices and ways to inputinformation into computing device 610 or onto a communication network.

User interface output devices 620 may include a display subsystem, aprinter, a fax machine, or non-visual displays such as audio outputdevices. The display subsystem may include a cathode ray tube (CRT), aflat-panel device such as a liquid crystal display (LCD), a projectiondevice, or some other mechanism for creating a visible image. Thedisplay subsystem may also provide non-visual display such as via audiooutput devices. In general, use of the term “output device” is intendedto include all possible types of devices and ways to output informationfrom computing device 610 to the user or to another machine or computingdevice.

Storage subsystem 624 stores programming and data constructs thatprovide the functionality of some or all of the modules describedherein. For example, the storage subsystem 624 may include the logic toperform selected aspects of the method of FIG. 5.

These software modules are generally executed by processor 614 alone orin combination with other processors. Memory 625 used in the storagesubsystem 624 can include a number of memories including a main randomaccess memory (RAM) 630 for storage of instructions and data duringprogram execution and a read only memory (ROM) 632 in which fixedinstructions are stored. A file storage subsystem 626 can providepersistent storage for program and data files, and may include a harddisk drive, a floppy disk drive along with associated removable media, aCD-ROM drive, an optical drive, or removable media cartridges. Themodules implementing the functionality of certain implementations may bestored by file storage subsystem 626 in the storage subsystem 624, or inother machines accessible by the processor(s) 614.

Bus subsystem 612 provides a mechanism for letting the variouscomponents and subsystems of computing device 610 communicate with eachother as intended. Although bus subsystem 612 is shown schematically asa single bus, alternative implementations of the bus subsystem may usemultiple busses.

Computing device 610 can be of varying types including a workstation,server, computing cluster, blade server, server farm, or any other dataprocessing system or computing device. Due to the ever-changing natureof computers and networks, the description of computing device 610depicted in FIG. 6 is intended only as a specific example for purposesof illustrating some implementations. Many other configurations ofcomputing device 610 are possible having more or fewer components thanthe computing device depicted in FIG. 6.

In situations in which the systems described herein collect personalinformation about users, or may make use of personal information, theusers may be provided with an opportunity to control whether programs orfeatures collect user information (e.g., information about a user'ssocial network, social actions or activities, profession, a user'spreferences, or a user's current geographic location), or to controlwhether and/or how to receive content from the content server that maybe more relevant to the user. Also, certain data may be treated in oneor more ways before it is stored or used, so that personal identifiableinformation is removed. For example, a user's identity may be treated sothat no personal identifiable information can be determined for theuser, or a user's geographic location may be generalized wheregeographic location information is obtained (such as to a city, ZIPcode, or state level), so that a particular geographic location of auser cannot be determined. Thus, the user may have control over howinformation is collected about the user and/or used.

While several implementations have been described and illustratedherein, a variety of other means and/or structures for performing thefunction and/or obtaining the results and/or one or more of theadvantages described herein may be utilized, and each of such variationsand/or modifications is deemed to be within the scope of theimplementations described herein. More generally, all parameters,dimensions, materials, and configurations described herein are meant tobe exemplary and that the actual parameters, dimensions, materials,and/or configurations will depend upon the specific application orapplications for which the teachings is/are used. Those skilled in theart will recognize, or be able to ascertain using no more than routineexperimentation, many equivalents to the specific implementationsdescribed herein. It is, therefore, to be understood that the foregoingimplementations are presented by way of example only and that, withinthe scope of the appended claims and equivalents thereto,implementations may be practiced otherwise than as specificallydescribed and claimed. Implementations of the present disclosure aredirected to each individual feature, system, article, material, kit,and/or method described herein. In addition, any combination of two ormore such features, systems, articles, materials, kits, and/or methods,if such features, systems, articles, materials, kits, and/or methods arenot mutually inconsistent, is included within the scope of the presentdisclosure.

What is claimed is:
 1. A method, comprising: for at least one task notalready associated with a user: determining, by one or more processors,that a current location of the user is not a familiar location to theuser, wherein determining that the current location of the user is not afamiliar location to the user is based on determining that the user is anew visitor to the current location who has not previously visited thecurrent location; identifying, by one or more of the processorsassociated with an automated messaging system and from a task database,a task for the user, the task indicating at least one action and atleast one entity associated with the action, wherein the task identifiedfrom the task database based on: identifying one or more actionsperformed by the user via one or more computing devices of the user, anddetermining that the current location of the user is not a familiarlocation to the user; assigning, by one or more of the processors, thetask to the user, the assigning being independent of any user interfaceinput provided by the user to the automated messaging system, whereinassigning the task to the user is based on determining that: (i) thecurrent location of the user is not familiar to the user, (ii) the taskis associated with individuals that are unfamiliar with a location ofthe entity that is indicated by the identified task, and (iii) thelocation, of the entity, that is indicated by the task corresponds tothe current location of the user; identifying, by one or more of theprocessors, a protocol that defines a plurality of parameters related toperformance of the action for the entity; initiating, by one or more ofthe processors and based on assigning the task to the user andidentifying the protocol, a dialog with the user that is related to thetask, the initiating being by the automated messaging system and withoutthe user having ever provided any input related to the task directly tothe automated messaging system, the initiating comprising: automaticallyproviding, by the automated messaging system and for audiblepresentation to the user via a speaker of a computing device of theuser, content that is tailored to the task, wherein prior to initiatingthe dialog, by the automated messaging system, any ongoing dialogbetween the user and the automated messaging system was not explicitlydirected to the task, and wherein the content that is tailored to thetask is tailored to the entity of the task that is assigned to the user;receiving, by one or more of the processors in response to theproviding, free-form natural language input that continues the dialogand that is formulated by the user via a user interface input device ofthe computing device; generating, by one or more of the processors,additional content that is tailored to the task and that is based on thenatural language input and that solicits input directed toward a groupof one or more of the plurality of parameters of the protocol;providing, by one or more of the processors in continuance of thedialog, the additional content for presentation to the user via a userinterface output device; receiving, by one or more of the processors inresponse to providing the additional content, additional free-formnatural language input that continues the dialog and that is formulatedby the user via the user interface input device of the computing device;determining, by one or more of the processors, that the free-formnatural language input and the additional free-form natural languageinput include valid values for all parameters of the protocol for thetask; and initiating, by one or more of the processors, performance ofthe action for the entity with the valid values.
 2. The method of claim1, further comprising: determining, by one or more of the processors,that the current location of the user matches the location.
 3. Themethod of claim 1, further comprising: identifying, by one or more ofthe processors, source language content that is tailored to the task andthat is in a source language; identifying, by one or more of theprocessors, a language of the user that is different from the sourcelanguage; and generating the content by one or more of the processors bytranslating the source language content from the source language to thelanguage of the user.
 4. The method of claim 1, wherein the entityindicated by the action is a service entity, wherein the free-formnatural language input and the additional free-form natural languageinput are both in a native language of the user, and further comprising:identifying, by one or more of the processors, a preferred language forthe service entity; translating, by one or more of the processors, atleast some of the free-form natural language input and the additionalfree-form natural language input from the native language to thepreferred language; and providing, by one or more of the processors, thetranslated natural language input to the service entity.
 5. The methodof claim 1, further comprising: wherein assigning the task to the useris further based on the current location of the user being in ageographic area having a primary language that is not spoken by theuser; wherein the content that is tailored to the task is provided basedon the current location of the user being in a geographic area havingthe primary language that is not spoken by the user includes a commonphrase, in the primary language that is not spoken by the user, spokenat the entity in association with the task; wherein the free-formnatural language input, received in response to providing the content,is audio of an attempt to verbally speak the common phrase; and whereinthe additional content is feedback based on analysis of the audio. 6.The method of claim 1, further comprising: identifying, by one or moreof the processors, one or more of the parameters for which valid valuesare not specified; generating, by one or more of the processors, furthercontent to solicit input directed toward the one or more of theparameters for which valid values are not specified; and providing, byone or more of the processors in continuance of the dialog, the furthercontent for presentation to the user via the user interface outputdevice.
 7. The method of claim 1, further comprising: determining thatat least one value specified by natural language input is not valid fora given parameter of the parameters of the group; wherein generating theadditional content includes generating the additional content to includean indication that the value is not valid for the given parameter andinclude an indication of one or more criteria for the given parameter.8. The method of claim 1, wherein initiating the dialog is in responseto user interface input directed to the automated messaging system,wherein the user interface input does not explicitly identify the task.9. The method of claim 1, wherein providing the additional content forpresentation to the user comprises providing the additional content forsimultaneous display with the content, the simultaneous display with thecontent being via a graphical user interface rendered by the computingdevice.
 10. The method of claim 9, wherein providing the additionalcontent for presentation to the user comprises providing the additionalcontent for simultaneous display with the natural language input, thesimultaneous display with the natural language input being via thegraphical user interface rendered by the computing device.
 11. Themethod of claim 9, wherein the automated messaging system is implementedat least in part on one or more computing devices that are remote fromthe computing device of the user.
 12. The method of claim 1, whereininitiating the dialog with the user that is related to the task occursduring the ongoing dialog that was not explicitly directed to the task.13. The method of claim 1 further comprising: wherein assigning the atleast one task for the user is further based on the current location ofthe user being in a geographic area having a primary language that isnot spoken by the user; wherein the content that is tailored to the taskis provided based on the current location of the user being in ageographic area having a primary language that is not spoken by theuser, and wherein the additional content is an audible rendering of acommon phrase, in the primary language that is not spoken by the user,spoken at the entity.
 14. The method of claim 1 further comprising:wherein assigning the at least one task for the user is further based onthe current location of the user being in a geographic area having aprimary language that is not spoken by the user, wherein the content orthe additional content comprises a common phrase, in the primarylanguage that is not spoken by the user, spoken at the entity.
 15. Asystem comprising: memory and one or more processors, the memory storinginstructions that, when executed by the one or more processors, causethe one or more processors to: for at least one task not alreadyassociated with a user, assign at least one task to the user, the taskindicating at least one action and at least one entity associated withthe action, wherein assigning the at least one task to the user causesthe one or more processors to: determine that the user is present at acurrent location and that the current location is not a familiarlocation to the user, wherein determining that the current location ofthe user is not a familiar location to the user is based on determiningthat the user is a new visitor to the current location who has notpreviously visited the current location; identify, from a task database,a task for the user, the task indicating at least one action and atleast one entity associated with the action, wherein the task isidentified from the task database based on: identifying one or moreactions performed by the user via one or more computing devices of theuser, and determining that the current location of the user is not afamiliar location to the user; and assign the task to the user based ondetermining that: (i) the current location of the user is not familiarto the user, (ii) the task is associated with individuals that areunfamiliar with a location of the entity that is indicated by theidentified task, and (iii) the location, of the entity, that isindicated by the task corresponds to the current location of the user, wherein the assigning is independent of any user interface inputprovided by the user to the system; identify a protocol that defines aplurality of parameters related to performance of the action for theentity; initiate, based on assigning the task to the user andidentifying the protocol, a dialog with the user that is related to thetask, wherein in initiating the dialog the one or more processors are toautomatically provide, for audible presentation to the user via aspeaker of a computing device of the user, content that is tailored tothe task, wherein initiating the dialog is performed without the userhaving ever provided any input related to the task directly to thecomputing device, and wherein prior to initiating the dialog, anyongoing dialog was not explicitly directed to the task; receive, inresponse to the providing, free-form natural language input thatcontinues the dialog and that is formulated by the user via a userinterface input device of the computing device; generate additionalcontent that is tailored to the task and that is based on the naturallanguage input and that solicits input directed toward a group of theplurality of parameters of the protocol; provide, in continuance of thedialog, the additional content for presentation to the user via a userinterface output device; receive, in response to providing theadditional content, additional free-form natural language input thatcontinues the dialog and that is formulated by the user via the userinterface input device of the computing device; determine that thefree-form natural language input and the additional free-form naturallanguage input include valid values for all parameters of the protocolfor the task; and initiate performance of the action for the entity withthe valid values.
 16. The system of claim 15, wherein the instructionsto determine that the location is not a familiar location to the userfurther comprise instructions to determine that the current location ofthe user corresponds to a location of the entity and to determine thecurrent location of the user is in a geographic area having a primarylanguage that is not spoken by the user; wherein the content that istailored to the task is tailored to the entity of the task and isprovided based on the current location of the user being in a geographicarea having the primary language that is not spoken by the user includesa common phrase, in the primary language that is not spoken by the user,spoken at the entity in association with the task; wherein the free-formnatural language input, received in response to providing the content,is audio of an attempt to verbally speak the common phrase; and whereinthe additional content is feedback based on analysis of the audio. 17.At least one non-transitory computer-readable medium comprisinginstructions that, in response to execution of the instructions by oneor more processors, cause the one or more processors to perform thefollowing operations: for at least one task not already associated witha user: determine that a current location of the user is not a familiarlocation to the user, wherein determining that the current location ofthe user is not a familiar location to the user is based on determiningthat the user is a new visitor to the current location who as notpreviously visited the current location; identify, from a task database,a task for the user, the task indicating at least one action and atleast one entity associated with the action, wherein the task identifiedfrom the task database based on: identifying one or more actionsperformed by the user via one or more computing devices of the user, anddetermining that the current location of the user is not a familiarlocation to the user; assign the task to the user, the assigning beingindependent of any user interface input provided by the user to the oneor more processors, wherein assigning the task to the user is based ondetermining that: (i) the current location of the user is not familiarto the user, (ii) the task is associated with individuals that areunfamiliar with a location of the entity that is indicated by theidentified task, and (iii) the location, of the entity, that isindicated by the task corresponds to the current location of the user;identify a protocol that defines a plurality of parameters related toperformance of the action for the entity; initiate, based on assigningthe task to the user and identifying the protocol, and without the userhaving ever provided any input related to the task to the one or moreprocessors, a dialog with the user that is related to the task, whereinin initiating the dialog the one or more processors are to:automatically provide, for audible presentation to the user via aspeaker of a computing device of the user, content that is tailored tothe task, wherein prior to initiating the dialog, any ongoing dialog wasnot explicitly directed to the task, and wherein the content that istailored to the task is tailored to the entity of the task that isassigned to the user; receive, in response to the providing, free-formnatural language input that continues the dialog and that is formulatedby the user via a user interface input device of the computing device;generate additional content that is tailored to the task and that isbased on the natural language input and that solicits input directedtoward a group of the plurality of parameters of the protocol; provide,in continuance of the dialog, the additional content for presentation tothe user via a user interface output device; receive, in response toproviding the additional content, additional free-form natural languageinput that continues the dialog and that is formulated by the user viathe user interface input device of the computing device; determine thatthe free-form natural language input and the additional free-formnatural language input include valid values for all parameters of theprotocol for the task; and initiate performance of the action for theentity with the valid values.